Media streaming and communications continue to gain in importance. Adapting the media to accommodate diverse client capabilities and heterogeneous and time-varying communication links is one of the keys to efficient and effective media streaming. For example, clients can have different display, communication, power and computational capabilities. In addition, different portions of a network (in particular, wired portions of the network versus wireless portions of the network) can have different maximum bandwidths and quality levels, and network conditions can change over time. To accommodate the diversity in client and network characteristics as well as the time-varying nature of network conditions, intermediate network (“mid-network”) nodes or proxies that adapt or transcode the media stream to the client and the network can be situated on the communication path between a source of media content and the client.
Maintaining the security of the media content is another key to successful media streaming. Typically, the media content is encrypted to protect the content against unauthorized access en route. Ideally, the content would remain encrypted between the source and its final destination (e.g., the client). However, preserving end-to-end security presents a challenge to mid-network transcoding, because transcoding an encrypted stream means decrypting the stream, transcoding the decrypted stream, and re-encrypting the result. Thus, each network transcoding node presents a potential security breach.
There are other challenges to streaming media over a network. For example, some data packets transmitted over a network can experience delays along the way, perhaps arriving late at their destination. Also, some data packets may be lost along the way. The effects of late or lost data packets may be exacerbated for video data that are predicatively encoded (compressed). Predictive encoding introduces dependencies in the encoded data that improve the amount of compression but can also result in error propagation in the event of data packet loss or late arrival. With predictive encoding, the decoding of a frame of data may rely on the information in another frame. For example, with MPEG (Moving Pictures Experts Group) encoding, a B-frame is predicted from two P-frames or an I-frame and P-frame. Therefore, data packets for the two P-frames or for the P-frame and the I-frame need to be received earlier than their respective display times so that those frames can be used to decode the B-frame. Thus, encoded video frames that do not arrive or that arrive late at the decoder (e.g., a client or destination node) may not only miss their respective display deadlines, but may also prevent a number of other, subsequent frames from being displayed properly, depending on the particular coding dependencies of the late or missing frames. This can affect the overall quality of the display.
Thus, in addition to accommodating diverse client capabilities and heterogeneous and time-varying communication links and in addition to maintaining security of the media content, another key to successful media streaming over a network is reducing the likelihood that packets may be lost or delayed. Conventional solutions are either lacking in one or more of these capabilities, or are unduly complex.